import request from "./request"
 
export interface FlightInfo {
    /*航班ID */
    id: number;

    /*航班号 */
    number: string;

    /*预计起飞时间 */
    startTime: string;

    /*预计到达时间 */
    endTime: string;

    /*出发城市 */
    deployCity: string;

    /*到达城市 */
    arrivalCity: string;

    /*开放订票时间 */
    startBook: string;

    /*结束订票时间 */
    endBook: string;

    /*航班状态码 */
    status: number;

    /*航班状态信息 */
    statusInfo: string;

    /*价格 */
    price: number;

    /* 飞机信息 */
    aircraftInfoDTO: {
      /* 飞机型号 */
      model: string;

      /* 航空公司简称 */
      airlineSimpleName: string;

      /* 航空公司全名 */
      airlineFullName: string;

      /* 飞机ID */
      id: number;

      /* 是否被锁定 */
      isLocked: boolean;

      /* 飞机状态 */
      status: string;

      /* 航空公司图标 */
      logo: string;

      /* 飞机容量 */
      capacity: number;
    };
  }

export interface QueryIdleFlightQueryWrapper {
  /*出发城市 */
  deployCity: string;

  /*目的城市 */
  destCity: string;

  /*航班时间（单位: 日） */
  flightDate: string;
}

//查询指定地点时间的空闲航班
export const queryIdleFlights = (data: QueryIdleFlightQueryWrapper) => {
    return request({
        url: "/flight/flight/idle",
        method: "POST",
        data
    })
}

/**
 * 查询所有航班
 * @param page 页数
 * @returns 
 */
export const queryAllFlights = (page : number) => {
  return request({
    url: "/flight/flight/",
    method: "GET",
    params: {
      page
    }
  })
}

/**
 * 查询航班数目
 * @returns 航班数目
 */
export const queryAllFlightAmount = () => {
  return request({
    url: "/flight/flight/amount",
    method: "GET"
  })
}

/**
 * 发起起飞指令
 * @param id 航班ID
 */
export const takeoffFlight = (id: number) => {
  return request({
    url: "/flight/admin/takeoff",
    method: "POST",
    params: {
      id
    }
  })
}

/**
 * 发起降落指令
 * @param id 航班ID
 */
export const landFlight = (id: number) => {
  return request({
    url: "/flight/admin/land",
    method: "POST",
    params: {
      id
    }
  })
}

//创建航班参数
export interface CreateFlightParams {
  /*航班号 */
  number?: string;

  /*飞机id */
  aircraftId: number;

  /*起飞时间 */
  startTime: string;

  /*到达时间 */
  endTime: string;

  /*出发城市 */
  deployCity: string;

  /*到达城市 */
  arrivalCity: string;

  /*订票开始时间 */
  startBook: string;

  /*订票结束时间 */
  endBook: string;

  /*价格 */
  price: number;
}

/** 
 * 创建航班
 * @param {object} params 创建航班DTO
 * @param {string} params.number 航班号
 * @param {number} params.aircraftId 飞机id
 * @param {object} params.startTime 起飞时间
 * @param {object} params.endTime 到达时间
 * @param {string} params.deployCity 出发城市
 * @param {string} params.arrivalCity 到达城市
 * @param {object} params.startBook 订票开始时间
 * @param {object} params.endBook 订票结束时间
 * @param {number} params.price 价格
 * @returns
 */
export const createFlight = (params: CreateFlightParams) => {
  return request({
    url: "/flight/admin/flight",
    method: "PUT",
    data: params
  });
}